<?php
class SupplierAdminsController extends AppController {
    var $name = 'SupplierAdmins';

    var $pageTitle = 'Supplier Administrator';

    var $viewPath = 'suppliers/admins';

    var $uses = array('Site', 'CustProductSite', 'CustomerSupplier', 'Supplier');

    function beforeFilter() {
        parent::beforeFilter();
        // ใช้ใน Navigator element ระบุ controller ที่กำลังถูกเลือก
        $this->set('parentNav', 'supplier_admins');
        $this->set('tabMenu', 'tabmenus/supplier/admins');
    }

    function display() {

    }

    /**
     * สำหรับ Supplier ที่จะเข้าไปดูข้อมูล customer โดยจะแปลงตัวเองเป็น Customer Site user
     * @param int $site_id site id
     * @param int $customer_id customer id
     */
    function view_as_site_user($site_id, $customer_id) {
        // สิทธิ์เดิมของ Supplier
        $this->Session->write('Auth.User.supplier_read_only', $this->Session->read('Auth.User.read_only'));

        // เปลี่ยน Supplier user เป็น customer Site user
        $this->Session->write('Auth.User.prefix', CUST_PREFIX);
        $this->Session->write('Auth.User.customer_id', $customer_id);
        $this->Session->write('Auth.User.site_id', $site_id);
        $this->Session->write('Auth.User.is_head_user', false);
        $this->Session->write('Auth.User.can_view_other_site', false);
        $this->Session->write('Auth.User.can_add_location', false);
        $this->Session->write('Auth.User.read_only', true);
        $this->Session->write('Auth.User.Extend.from_supplier', true);

        $this->redirect('/users/home');
    }

    /**
     * สำหรับ Supplier ที่จะเข้าไปดูข้อมูล customer โดยจะแปลงตัวเองเป็น Customer Head user
     * @param int $customer_id customer id
     */
    function view_as_customer_user($customer_id) {
        // สิทธิ์เดิมของ Supplier
        $this->Session->write('Auth.User.supplier_read_only', $this->Session->read('Auth.User.read_only'));

        // เปลี่ยน Supplier user เป็น customer Site user
        $this->Session->write('Auth.User.prefix', CUST_PREFIX);
        $this->Session->write('Auth.User.customer_id', $customer_id);
        // ดึง Site แรกของ Customer ที่ Dispatch มาจาก Vendor
        $this->CustProductSite->contain();
        $cps = $this->CustProductSite->find('first', array(
                'conditions' => array(
                        'dispatch_from' => SUPPLIER_PREFIX,
                        'CustProductSite.customer_id' => $customer_id,
                        'CustProductSite.supplier_id' => $this->Auth->user('supplier_id')
                ))
        );
        $this->Session->write('Auth.User.site_id', $cps['CustProductSite']['site_id']);    // site เริ่มต้นให้เป็น site แรกของ customer
        $this->Session->write('Auth.User.is_head_user', true);
        $this->Session->write('Auth.User.can_view_other_site', false);
        $this->Session->write('Auth.User.can_add_location', false);
        $this->Session->write('Auth.User.read_only', true);
        $this->Session->write('Auth.User.Extend.from_supplier', true);

        $this->redirect('/users/home');
    }

    /**
     * ดูเป็น Customer เสร็จแล้วกลับมาเป็น Supplier
     */
    function customer_back_to_supplier() {
        $customer_id = $this->Auth->User('customer_id');
        // เปลี่ยน Supplier user เป็น customer head office user
        $this->Session->write('Auth.User.prefix', SUPPLIER_PREFIX);
        $this->Session->delete('Auth.User.customer_id');
        $this->Session->delete('Auth.User.site_id');
        $this->Session->delete('Auth.User.is_head_user');
        $this->Session->delete('Auth.User.can_add_location');
        $this->Session->delete('Auth.User.read_only');

        $this->Session->write('Auth.User.read_only', $this->Session->read('Auth.User.supplier_read_only'));
        $this->redirect('/supplier_customers/view/' . $customer_id);
    }
    
    /**
     * เช็คว่า Supplier ที่ใช้งานอยู่มร คลังสินค้าของลูกค้าอยู่ที่ Supplier เองหรือไม่
     */
    function has_supplier_inventories() {
        $supplier_id = $this->Auth->user('supplier_id');
        // ดึง Customer ทั้งหมดที่มีคลังอยู่ที่ Supplier
        $this->CustomerSupplier->contain(array('Customer'));
        $this->data = $this->CustomerSupplier->findAllBySupplierIdAndHasSupplierInventory($supplier_id, true);
        return $this->data;
    }
    
    function has_cust_inventories() {
        $supplier_id = $this->Auth->user('supplier_id');
        $this->Supplier->id = $supplier_id;
        return $this->Supplier->field('has_cust_inventory');
    }
}
?>